package com.forcht.webApplication;
/**
 * 
 * @author forcht
 *
 */

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Response {
	
	private static final int BUFFER_SIZE=1024;
	Request request;
	OutputStream output;
	
	public Response(OutputStream output) {
		this.output=output;
	}
	
	public void setRequest(Request request) {
		this.request=request;
	}
	/**
	 * 读取请求的静态文件
	 * 并发送给客户端
	 * 如果文件不存在则返回文件不存在的信息
	 * @throws IOException
	 */
	public void sendStaticResource() throws IOException {
		byte[] bytes=new byte[BUFFER_SIZE];
		FileInputStream fis=null;
		
		try {
			File file=new File(HttpServer.WEB_ROOT,request.getUri());
			if(file.exists()) {
				fis=new FileInputStream(file);
				int ch=fis.read(bytes,0,BUFFER_SIZE);
				while(ch!=-1) {
					output.write(bytes,0,ch);
					ch=fis.read(bytes,0,BUFFER_SIZE);
				}
			}else {
				String errorMessage="Http/1.1 404 File Not Found\r\n"+
							"Content-Type: text/html\r\n"+
						    "Content-Length: 23\r\n"+
							"\r\n"+
						    "<h1>File Not Found</h1>";
				output.write(errorMessage.getBytes());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(fis!=null) {
				fis.close();
			}
		}
	}
}
